           +----------------+
           |     Board      |
           +----------------+
           | - cells_: 8x8 |
           |   vector of   |
           | unique_ptr<Piece> |
           +----------------+
           | + at(r,c)      |
           | + ref(r,c)     |
           | + clear()      |
           | + isClearLine()|
           +----------------+
                   ^
                   |
           contains 1..*   (8x8)
                   |
           +----------------+
           |     Piece      |<----------------+
           +----------------+                 |
           | - symbol_      |                 |
           | - white_       |                 |
           | - moved_       |                 |
           +----------------+                 |
           | + symbol()     |                 |
           | + isWhite()    |                 |
           | + moved()      |                 |
           | + setMoved()   |                 |
           | + isValidMove()| (pure virtual)  |
           +----------------+                 |
                   ^                            |
    +--------------+--------------+             |
    |              |              |             |
  Pawn           King          Knight          ...
  Rook           Bishop        Queen
  SuperPawn      ArmoredQueen  Spy
  Joker


           +----------------+
           |   ChessGame    |
           +----------------+
           | - board_:Board |
           | - whiteTurn_   |
           +----------------+
           | + setupBoard() |
           | + displayBoard()|
           | + parseSquare()|
           | + movePiece()  |
           | + save()       |
           | + load()       |
           | + whiteTurn()  |
           +----------------+

